home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (C) 2001 by Digital Mars */
- /* www.digitalmars.com */
-
- #if __DMC__ || __RCC__
- #pragma once
- #endif
-
- #ifndef __STDINT_H
- #define __STDINT_H 1
-
- #define __LONGLONG (__INTSIZE == 4)
-
- /* Exact sizes */
- typedef signed char int8_t;
- typedef unsigned char uint8_t;
-
- typedef short int16_t;
- typedef unsigned short uint16_t;
-
- typedef long int32_t;
- typedef unsigned long uint32_t;
-
- /* At least sizes */
-
- typedef signed char int_least8_t;
- typedef unsigned char uint_least8_t;
-
- typedef short int_least16_t;
- typedef unsigned short uint_least16_t;
-
- typedef long int_least32_t;
- typedef unsigned long uint_least32_t;
-
- /* Fastest minimum width sizes */
-
- typedef signed char int_fast8_t;
- typedef unsigned char uint_fast8_t;
-
- typedef int int_fast16_t;
- typedef unsigned uint_fast16_t;
-
- typedef long int_fast32_t;
- typedef unsigned long uint_fast32_t;
-
- /* Integer pointer holders */
-
- #if defined(__COMPACT__) || defined(__LARGE__) || defined(__VCM__)
- typedef long intptr_t;
- typedef unsigned long uintptr_t;
- #else
- typedef int intptr_t;
- typedef unsigned uintptr_t;
- #endif
-
- /* Greatest width integer types */
-
- #if __LONGLONG
- typedef long long intmax_t;
- typedef unsigned long long uintmax_t;
- #else
- typedef long intmax_t;
- typedef unsigned long uintmax_t;
- #endif
-
- /* long long typedefs */
-
- #if __LONGLONG
-
- typedef long long int64_t;
- typedef unsigned long long uint64_t;
-
- typedef long long int_least64_t;
- typedef unsigned long long uint_least64_t;
-
- typedef long long int_fast64_t;
- typedef unsigned long long uint_fast64_t;
-
- #endif
-
- #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS)
-
- #define INT8_MIN (-128)
- #define INT8_MAX 127
- #define UINT8_MAX 0xFF
-
- #define INT16_MIN (-32768)
- #define INT16_MAX 32767
- #define UINT16_MAX 0xFFFF
-
- #define INT32_MIN (-2147483647L - 1)
- #define INT32_MAX 2147483647
- #define UINT32_MAX 0xFFFFFFFF
-
- #define INT_LEAST8_MIN INT8_MIN
- #define INT_LEAST8_MAX INT8_MAX
- #define UINT_LEAST8_MAX UINT8_MAX
-
- #define INT_LEAST16_MIN INT16_MIN
- #define INT_LEAST16_MAX INT16_MAX
- #define UINT_LEAST16_MAX UINT16_MAX
-
- #define INT_LEAST32_MIN INT32_MIN
- #define INT_LEAST32_MAX INT32_MAX
- #define UINT_LEAST32_MAX UINT32_MAX
-
- #define INT_FAST8_MIN INT8_MIN
- #define INT_FAST8_MAX INT8_MAX
- #define UINT_FAST8_MAX UINT8_MAX
-
- #if __INTSIZE == 4
- #define INT_FAST16_MIN INT32_MIN
- #define INT_FAST16_MAX INT32_MAX
- #define UINT_FAST16_MAX UINT32_MAX
- #else
- #define INT_FAST16_MIN INT16_MIN
- #define INT_FAST16_MAX INT16_MAX
- #define UINT_FAST16_MAX UINT16_MAX
- #endif
-
- #define INT_FAST32_MIN INT32_MIN
- #define INT_FAST32_MAX INT32_MAX
- #define UINT_FAST32_MAX UINT32_MAX
-
- #if __LONGLONG
-
- #define INT64_MIN (-9223372036854775807LL-1LL)
- #define INT64_MAX 9223372036854775807LL
- #define UINT64_MAX 0xFFFFFFFFFFFFFFFF
-
- #define INT_LEAST64_MIN INT64_MIN
- #define INT_LEAST64_MAX INT64_MAX
- #define UINT_LEAST64_MAX UINT64_MAX
-
- #define INT_FAST64_MIN INT64_MIN
- #define INT_FAST64_MAX INT64_MAX
- #define UINT_FAST64_MAX UINT64_MAX
-
- #endif
-
- #if defined(__COMPACT__) || defined(__LARGE__) || defined(__VCM__) || __INTSIZE == 4
- #define INTPTR_MIN INT32_MIN
- #define INTPTR_MAX INT32_MAX
- #define UINTPTR_MAX UINT32_MAX
- #else
- #define INTPTR_MIN INT16_MIN
- #define INTPTR_MAX INT16_MAX
- #define UINTPTR_MAX UINT16_MAX
- #endif
-
- #if __LONGLONG
- #define INTMAX_MIN INT64_MIN
- #define INTMAX_MAX INT64_MAX
- #define UINTMAX_MAX UINT64_MAX
- #define INTMAX_C(v) v##LL
- #define UINTMAX_C(v) v##ULL
- #else
- #define INTMAX_MIN INT32_MIN
- #define INTMAX_MAX INT32_MAX
- #define UINTMAX_MAX UINT32_MAX
- #define INTMAX_C(v) v##L
- #define UINTMAX_C(v) v##UL
- #endif
-
- #if __INTSIZE == 4
- #define PTRDIFF_MIN INT32_MIN
- #define PTRDIFF_MAX INT32_MAX
- #define SIG_ATOMIC_MIN INT32_MIN
- #define SIG_ATOMIC_MAX INT32_MAX
- #define SIZE_MAX UINT32_MAX
- #else
- #define PTRDIFF_MIN INT16_MIN
- #define PTRDIFF_MAX INT16_MAX
- #define SIG_ATOMIC_MIN INT16_MIN
- #define SIG_ATOMIC_MAX INT16_MAX
- #define SIZE_MAX UINT16_MAX
- #endif
-
-
- #define WCHAR_MIN 0
- #define WCHAR_MAX UINT16_MAX
-
- #define WINT_MIN 0
- #define WINT_MAX UINT16_MAX
-
- #define INT8_C(v) v
- #define UINT8_C(v) v
- #define INT16_C(v) v
- #define UINT16_C(v) v
- #define INT32_C(v) v##L
- #define UINT32_C(v) v##UL
-
- #if __LONGLONG
- #define INT64_C(v) v##LL
- #define UINT64_C(v) v##ULL
- #endif
-
- #endif
-
- #endif
-